home *** CD-ROM | disk | FTP | other *** search
/ Sprite 1984 - 1993 / Sprite 1984 - 1993.iso / src / machserver / notes / old.new / uniSprite < prev    next >
Encoding:
Text File  |  1991-05-21  |  5.2 KB  |  125 lines

  1. (1) Study Mach interface.  Think about which parts of Sprite go away.
  2.     [DONE].
  3.  
  4. (2) Study Sprite machine-dependent interface (mach module and
  5.     machine-dependent stuff in other modules).  Study VM, dev, fsdm, fsio,
  6.     ofs, proc, prof, sched, sync, timer interfaces.  Make changes in
  7.     Sprite to machine-dependent interface, as necessary?  Determine
  8.     mapping to Mach.  Areas that will need special attention: device & net
  9.     interfaces (drivers, etc.), startup (e.g., mach/*.md, main/*.md),
  10.     support for local disk, kernel (er, Sprite server) profiling.  For
  11.     dev, note which items are used in dev and which are only in the
  12.     header file (presumably for completeness); this gives an idea of
  13.     how much hacking on Mach device drivers you have to do.
  14.     Also need to think about use of threads!
  15.     [VM: 1 day [DONE/3 days], startup: 1 day, other mach: 3 days,
  16.     Dev+net: 3 days,
  17.     fsdm/fsio: 1 day, ofs: xxx, proc: 1 day, sched/sync: 1 day, timer: 1
  18.     day; double => 5 weeks]
  19.  
  20. (2.5) Make sure X works with 2.5. [DONE]
  21.  
  22. (3) Get Mach 3.0 UNIX development environment running on Oregano.
  23.     (Installation notes?) [kernel: 1 week, gdb: 1 week; double => 4
  24.     weeks]
  25.  
  26. (4) Set up development environment for building Sprite binaries and
  27.     the server.  Make sure you've got a consistent threads package
  28.     (see the mail from Michael Jones in +mach3 about how the UX and US
  29.     servers have their own private threads implementations)
  30.     [1 week; double => 2 weeks]
  31.  
  32. (5) Get MIG to work with Sprite.  Change sys to work with MIG.  [write
  33.     MIG interface: 1 week, change sys to use MIG: 1 week; double => 4
  34.     weeks]
  35.  
  36. (6) Merge Sprite libc with Mach 3.0 libc.  Probably want to start
  37.     from Sprite libc, merging in: Mach crt code (and any other Mach
  38.     calls made from generic code); changing sync to use C Threads
  39.     [actually, want C Threads to use Sprite fork],
  40.     changing syscall and unixSyscall to use MIG; and disabling "disk"
  41.     routines.  (Any libc code that's currently in the kernel should be
  42.     adequately protected against races.  Anything else is probably
  43.     not.)  [1 week; double => 2 weeks]
  44.  
  45. (7) Hack up simple "printf" server with client, get it to work.  This
  46.     is to test infrastructure and provide support for debugging.
  47.     (e.g., try dereferencing a null pointer--does the debugging
  48.     support work?)
  49.     [1 month]
  50.  
  51. (8) Add simple VM support (e.g., the client faults on a page, which
  52.     the server maps in and fills with a predetermined pattern).  This
  53.     is to provide experience with the external pager interface.
  54.     [1 month]
  55.  
  56. (9) Study emulation library; write Sprite version. [study: 1 week,
  57.     write: 4 weeks; double => 8 weeks]
  58.  
  59. (10) Study the system call redirection code.  If it's simple, include
  60.      it in the initial version.  Otherwise just go initially for
  61.      source compatibility.  (Would eventually like binary compatibility with
  62.      both Mach and Sprite.)  [2 days]
  63.  
  64. (11) Make RCS branch and split off a copy of the Sprite kernel.
  65.      [1 day; double => 2 days]
  66.  
  67. (12) Finish VM, with only one process running a predetermined object
  68.      file.  Use the UNIX server for backing store and the predetermined
  69.      binary.  Use "spriteinit" as the application?
  70.      [1 month]
  71.  
  72. (13) Get fork/exec working, still with the UNIX file system.
  73.      [1 month]
  74.  
  75. (14) Get the low-level network stuff working.
  76.      [2 weeks; double => 1 month]
  77.  
  78. (15) Get the Sprite FS working, using remote files only.
  79.      [1 month]
  80.  
  81. (16) Move the VM/proc code that uses the UNIX file system over to the
  82.      Sprite FS.  Check for vm_allocate calls--calls that allocate
  83.      memory in a client's address space should use vm_map using some
  84.      default pager (originally the UNIX one, for this step one that
  85.      uses Sprite). [1 week; double => 2 weeks]
  86.  
  87. (17) Fix major performance problems, including memory leaks.  Did
  88.      anyone ever fix the sun3 so that it discards kernel stacks when
  89.      appropriate?  To figure out how much time locking/unlocking is
  90.      taking, may need to run a benchmark to get the average time for
  91.      the operation, then look at the counts of how often the different
  92.      operations occur.  [2 weeks; double => 4 weeks] 
  93.  
  94. (18) Add support for local files, using LFS. [1 month]
  95.  
  96. (19) Hack C Threads for use with user-level programs.  In particular,
  97.      fork should create a new Sprite process.
  98.  
  99. (20) Add encapsulation/decapsulation routines for process migration.
  100.      Add code to ensure that a process is in a migratable state (see, e.g.,
  101.      Proc_MigrateTrap).  Re-enable migration.  [2 weeks; double => 4
  102.      weeks]
  103.  
  104. Total: ?? weeks
  105.  
  106. (21) Teach kernel pager about Sprite file system?  (See the mail
  107.      discussion "default pager" in +mach.)  Make Sprite stable
  108.      enough to use as the default server.  Add hacks for debugging a
  109.      second Sprite server under Sprite/Mach (e.g., so that debugging
  110.      version uses different Sprite ID).  Think about how the L1
  111.      commands should be replaced.  Get rid of UNIX framework.  Get rid
  112.      of unused routines, symbols.  Get rid of stubs that assume
  113.      presence of Unix server.
  114.  
  115. (22) Get running diskless.
  116.  
  117. (23) Add support to Sprite server to understand Mach disk layout.
  118.      Test as server, using Mach layout and LFS.  Be careful not to
  119.      take any proprietary code.
  120.  
  121.  
  122. Local Variables:
  123. mode: indented-text
  124. End:
  125.